#ifndef _types_hpp_
#define _types_hpp_

#include <cstddef>

#ifdef __GNUC__
	#include <boost/cstdint.hpp>
#endif

/** \file types.hpp
 *  \author Adrian Schweizer
 *  \created  $Sa 18 Aug 03:48:01 pm CEST 2007 schwadri@SchwadriComp.local$
 *  \modified $So 19 Aug 12:58:36 pm CEST 2007 schwadri@SchwadriComp.local$
 */

namespace core  {

    /** \brief alternative names for integral types borrowed from SDL*/
    namespace types {

        #ifdef __GNUC__
        //use this for the gnu compiler

        typedef uint8_t         uint8;
        typedef int8_t          sint8;
        typedef uint16_t        uint16;
        typedef int16_t         sint16;
        typedef uint32_t        uint32;
        typedef int32_t         sint32;
        typedef uint64_t        uint64;
        typedef int64_t         sint64;

        /** \name Lazy old man's types
         *  \brief i'm tired of writing sintxx all the time.
         *///@{
        typedef int64_t         int64;
        typedef int             int32;
        typedef short           int16;
        typedef char            int8;
        //@}
        #elif defined(_MSC_VER) || 1
        //use this for the msvc compiler and any other unknown compiler

        typedef unsigned char   uint8;
        typedef signed char     sint8;
        typedef unsigned short  uint16;
        typedef signed short    sint16;
        typedef unsigned int    uint32;
        typedef signed int      sint32;
        typedef unsigned long long  uint64;
        typedef signed long long    sint64;

        /** \name Lazy old man's types
         *  \brief i'm tired of writing sintxx all the time.
         *///@{
        typedef signed long long    int64;
        typedef int                 int32;
        typedef short               int16;
        typedef char                int8;
        //@}
        #endif
    }
}
#endif  // _types_hpp_
